﻿using Cofe.Core.Property;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cofe.Core.Defines.Properties;

namespace Cofe.Core.Implements
{
    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CachePropertyDefinitions : PropertyDefinitionBase<CacheProperties>
    {
        public CachePropertyDefinitions() { Expressions = new CachePropertiesExpressionDefinitions(); }
        public CachePropertyDefinitions(params object[] supportedProperties) : base(supportedProperties)
        { Expressions = new CachePropertiesExpressionDefinitions(); }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofePropertyDefinitions : PropertyDefinitionBase<CofeProperties>
    {
        public CofePropertyDefinitions() { Expressions = new CofePropertiesExpressionDefinitions(); }
        public CofePropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) 
        { Expressions = new CofePropertiesExpressionDefinitions(); }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeDirectoryPropertyDefinitions : PropertyDefinitionBase<CofeDirectoryProperties>
    {
        public CofeDirectoryPropertyDefinitions() { }
        public CofeDirectoryPropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) { }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeItemPropertyDefinitions : PropertyDefinitionBase<CofeItemProperties>
    {
        public CofeItemPropertyDefinitions() { Expressions = new CofeItemPropertiesExpressionDefinitions(); }
        public CofeItemPropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) { }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeStreamPropertyDefinitions : PropertyDefinitionBase<CofeStreamProperties>
    {
        public CofeStreamPropertyDefinitions() { }
        public CofeStreamPropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) { }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeIconPropertyDefinitions : PropertyDefinitionBase<CofeIconProperties>
    {
        public CofeIconPropertyDefinitions() { }
        public CofeIconPropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) { }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeEntryLinkPropertyDefinitions : PropertyDefinitionBase<CofeEntryLinkProperties>
    {
        public CofeEntryLinkPropertyDefinitions() { }
        public CofeEntryLinkPropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) { }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeEntryListPropertyDefinitions : PropertyDefinitionBase<CofeEntryListProperties>
    {
        public CofeEntryListPropertyDefinitions() { }
        public CofeEntryListPropertyDefinitions(params object[] supportedProperties) : base(supportedProperties) { }
    }

    [ServicePriority(ServicePriorityAttribute.DefaultPriority_COFE)]
    [Export(typeof(ICofeService))]
    public class CofeEntryTypePropertyDefinitions : PropertyDefinitionBase<CofeEntryTypeProperties>
    {
        public CofeEntryTypePropertyDefinitions() { Expressions = new CofeEntryTypePropertiesExpressionDefinitions(); }
        public CofeEntryTypePropertyDefinitions(params object[] supportedProperties) : base(supportedProperties)
        { Expressions = new CofeEntryTypePropertiesExpressionDefinitions(); }
    }



}
